'use strict';
const db = uniCloud.database();
const Accounts = db.collection('Accounts');
exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event);
	
	try {
		// 1. 参数验证
		if (!event.username || !event.password) {
			return {
				success: false,
				errorCode: 'INVALID_PARAM',
				errorMessage: '用户名和密码不能为空'
			};
		}
		
		// 2. 用户名长度验证（示例：2-20个字符）
		if (event.username.length < 2 || event.username.length > 20) {
			return {
				success: false,
				errorCode: 'USERNAME_LENGTH_INVALID',
				errorMessage: '用户名长度必须在2-20个字符之间'
			};
		}
		
		// 3. 密码强度验证（示例：至少6位）
		if (event.password.length < 6) {
			return {
				success: false,
				errorCode: 'PASSWORD_TOO_WEAK',
				errorMessage: '密码长度不能少于6位'
			};
		}
		
		// 4. 检查用户名是否已存在
		const checkResult = await Accounts.where({
			username: event.username
		}).get();
		
		console.log('检查用户名结果:', checkResult);
		
		if (checkResult.data && checkResult.data.length > 0) {
			return {
				success: false,
				errorCode: 'USERNAME_EXISTS',
				errorMessage: '用户名已存在，请选择其他用户名'
			};
		}
		
		// 5. 添加注册时间戳
		const userData = {
			...event,
			register_date: Date.now(), // 添加注册时间
			last_login_date: null // 初始化为null
		};
		
		// 6. 插入用户数据
		let addUserRes = await Accounts.add(userData);
		console.log('用户注册成功:', addUserRes);
		
		// 7. 返回成功结果（不返回密码等敏感信息）
		return {
			success: true,
			errorCode: '',
			errorMessage: '',
			data: {
				uid: addUserRes.id,
				username: userData.username,
				register_date: userData.register_date
			}
		};
		
	} catch (error) {
		// 8. 统一错误处理
		console.error('注册过程发生错误:', error);
		
		return {
			success: false,
			errorCode: 'SYSTEM_ERROR',
			errorMessage: '系统繁忙，请稍后重试',
			debugInfo: process.env.NODE_ENV === 'development' ? error.message : undefined
		};
	}
};